有趣的python迷你程序(画爱心)

时间:2026-03-20 来源:

方法1:tkinter动态爱心效果

tkinter是Python标准GUI库,通过创建Canvas画布和粒子系统,可以实现动态跳动的爱心效果。核心实现包括数学函数计算爱心坐标、随机生成粒子、定时更新粒子位置以及循环动画。 复制以下代码到编辑器运行即可。


import tkinter as tk

import random

import math

class HeartAnimation:

    def __init__(self):

        self.root = tk.Tk()

        self.canvas = tk.Canvas(self.root, bg='black', height=600, width=800)

        self.canvas.pack()

        self.particles = []

        self.colors = ["#ff69b4", "#ff1493", "#c71585", "#db7093"]

        self.create_heart()

        self.animate()

        self.root.mainloop()

    def heart_pos(self, t, shrink=12):

        x = 16 * (math.sin(t) ** 3)

        y = 13 * math.cos(t) - 5 * math.cos(2*t) - 2 * math.cos(3*t) - math.cos(4*t)

        return x * shrink + 400, -y * shrink + 300

    def create_heart(self):

        for _ in range(500):

            t = random.uniform(0, 2*math.pi)

            x, y = self.heart_pos(t)

            size = random.randint(1, 3)

            color = random.choice(self.colors)

            particle = self.canvas.create_oval(

                x-size, y-size, x+size, y+size, 

                fill=color, outline=color

            )

            self.particles.append((particle, t))

    def animate(self):

        for i, (particle, t) in enumerate(self.particles):

            new_t = t + 0.02

            x, y = self.heart_pos(new_t)

            size = random.randint(1, 3)

            self.canvas.coords(particle, x-size, y-size, x+size, y+size)

            self.particles[i] = (particle, new_t)

        self.root.after(30, self.animate)

if __name__ == "__main__":

    HeartAnimation()



方法2:turtle图形库绘制爱心

turtle是Python内置的图形库,适合初学者学习图形编程。通过控制画笔移动轨迹和填充颜色,可以绘制出彩色旋转的爱心。核心步骤包括设置画布、定义颜色列表、绘制爱心曲线以及循环旋转。


import turtle

import random


def draw_heart():

    screen = turtle.Screen()

    screen.bgcolor("black")

    pen = turtle.Turtle()

    pen.speed(10)

    

    colors = ["red", "pink", "magenta", "violet"]

    for i in range(50):

        pen.color(random.choice(colors))

        pen.begin_fill()

        pen.left(140)

        pen.forward(113)

        for _ in range(200):

            pen.right(1)

            pen.forward(1)

        pen.left(120)

        for _ in range(200):

            pen.right(1)

            pen.forward(1)

        pen.forward(113)

        pen.end_fill()

        pen.right(5)

    

    pen.hideturtle()

    screen.mainloop()

if __name__ == "__main__":

    draw_heart()


方法3:

字符画爱心实现

字符画爱心通过在控制台输出特定字符组成爱心形状,适合快速展示简单图形。核心思路是预先定义爱心各行的字符组合,然后逐行打印。


def print_heart():

    heart = [

        "  ♥♥♥   ♥♥♥  ",

        "♥♥♥♥♥♥ ♥♥♥♥♥♥",

        "♥♥♥♥♥♥♥♥♥♥♥♥♥",

        " ♥♥♥♥♥♥♥♥♥♥♥ ",

        "  ♥♥♥♥♥♥♥♥♥  ",

        "   ♥♥♥♥♥♥♥   ",

        "    ♥♥♥♥♥    ",

        "     ♥♥♥     ",

        "      ♥      "

    ]

    for line in heart:

        print(line)


if __name__ == "__main__":

    print_heart()



方法对比与选择建议

方法特点适用场景
字符画实现简单,无需额外库快速控制台输出
turtle图形化绘制,适合学习图形编程教学
tkinter动态效果,视觉效果佳交互式应用开发


相关文章: